﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Prototipo.Models;

namespace Prototipo.Controllers
{
    public partial class ProductoController : Controller
    {
        private Entidades db = new Entidades();

        //DEBE ESTAR LOGEADO PARA PODER HACER ESTO
        public virtual ActionResult AgregarAlCarro(int id /*ID del producto*/, string returnUrl = "")
        {
            DETALLE_COMANDA detalle = new DETALLE_COMANDA();
            detalle.ID_PRODUCTO = id;
            detalle.CANTIDAD = 1;

            ViewBag.NombreProducto = db.PRODUCTO_INDIVIDUALIZADO.Find(id).NOMBRE_PRODUCTO;
            ViewBag.ReturnUrl = returnUrl;

            return View(detalle);
        }
        
        [HttpPost]
        public virtual ActionResult AgregarAlCarro(DETALLE_COMANDA detalle, string ReturnUrl)
        {
            COMANDA comanda;
            try
            {
                comanda = db.COMANDA.Single(c => c.ID_ATENCION.Equals(Session.SessionID) && !c.ENVIADA);
            }
            catch (InvalidOperationException)
            {
                comanda = new COMANDA
                    {
                        FECHA_COMANDA = DateTime.Now,
                        ENVIADA = false
                    };
                ATENCION_MESA atencion = db.ATENCION_MESA.Find(Session.SessionID);
                atencion.COMANDA.Add(comanda);
                db.Entry(atencion).State = EntityState.Modified;
                db.SaveChanges();
            }

            //int id_det_comanda = comanda.DETALLE_COMANDA.Any() ? comanda.DETALLE_COMANDA.Count() + 1 : 1;
            //detalle.LINEA_DE_DETALLE_COMANDA = id_det_comanda;
            comanda.DETALLE_COMANDA.Add(detalle);
            db.SaveChanges();

            if (Url.IsLocalUrl(ReturnUrl) && !String.IsNullOrEmpty(ReturnUrl))
            {
                return Redirect(ReturnUrl);
            }
            else
            {
                return RedirectToAction(Actions.Details(detalle.ID_PRODUCTO, added: true, many: detalle.CANTIDAD > 1));
            }
        }

        //
        // GET: /Producto/

        public virtual ActionResult Index()
        {
            return View(db.PRODUCTO_INDIVIDUALIZADO.ToList());
        }

        //
        // GET: /Producto/Details/5

        public virtual ActionResult Details(int id = 0, bool added = false, bool many = false)
        {
            PRODUCTO_INDIVIDUALIZADO producto_individualizado = db.PRODUCTO_INDIVIDUALIZADO.Find(id);
            if (producto_individualizado == null)
            {
                return HttpNotFound();
            }
            ViewBag.Success = added;
            ViewBag.VariosPlatos = many;
            return View(producto_individualizado);
        }

        #region Nada
        //
        // GET: /Producto/Create

        //public virtual ActionResult Create()
        //{
        //    return View();
        //}

        //
        // POST: /Producto/Create

        //[HttpPost]
        //public virtual ActionResult Create(PRODUCTO_INDIVIDUALIZADO producto_individualizado)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        db.PRODUCTO_INDIVIDUALIZADO.Add(producto_individualizado);
        //        db.SaveChanges();
        //        return RedirectToAction("Index");
        //    }

        //    return View(producto_individualizado);
        //}

        //
        // GET: /Producto/Edit/5

        //public virtual ActionResult Edit(int id = 0)
        //{
        //    PRODUCTO_INDIVIDUALIZADO producto_individualizado = db.PRODUCTO_INDIVIDUALIZADO.Find(id);
        //    if (producto_individualizado == null)
        //    {
        //        return HttpNotFound();
        //    }
        //    return View(producto_individualizado);
        //}

        ////
        //// POST: /Producto/Edit/5

        //[HttpPost]
        //public virtual ActionResult Edit(PRODUCTO_INDIVIDUALIZADO producto_individualizado)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        db.Entry(producto_individualizado).State = EntityState.Modified;
        //        db.SaveChanges();
        //        return RedirectToAction("Index");
        //    }
        //    return View(producto_individualizado);
        //}

        ////
        //// GET: /Producto/Delete/5

        //public virtual ActionResult Delete(int id = 0)
        //{
        //    PRODUCTO_INDIVIDUALIZADO producto_individualizado = db.PRODUCTO_INDIVIDUALIZADO.Find(id);
        //    if (producto_individualizado == null)
        //    {
        //        return HttpNotFound();
        //    }
        //    return View(producto_individualizado);
        //}

        ////
        //// POST: /Producto/Delete/5

        //[HttpPost, ActionName("Delete")]
        //public virtual ActionResult DeleteConfirmed(int id)
        //{
        //    PRODUCTO_INDIVIDUALIZADO producto_individualizado = db.PRODUCTO_INDIVIDUALIZADO.Find(id);
        //    db.PRODUCTO_INDIVIDUALIZADO.Remove(producto_individualizado);
        //    db.SaveChanges();
        //    return RedirectToAction("Index");
        //} 
        #endregion

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }
}